Modelo de Regresión
library(tidyverse)
library(readxl)
library(tsibble)
library(feasts)
library(fable)
datos_tbl <- read_xlsx("tiempos_respuesta.xlsx")
New names:
* `Tiempo l攼㹤mite restante` -> `Tiempo l攼㹤mite restante...24`
* `Tiempo l攼㹤mite restante` -> `Tiempo l攼㹤mite restante...27`
#glimpse(datos)
datos_tbl <- datos_tbl %>%
mutate(across(contains("Tiempo"), as.numeric)) %>%
rename_all(funs(make.names(.))) %>%
rename(Orden = N...de.orden,
Serie = N...de.serie,
Equipo = N...de.equipo,
Num.Cliente = N..de.cliente,
Distribuidor = Grupo.empresarial,
Nivel = Nivel.de.servicio,
Recepcion = `Fecha.recepción`,
Ejecutivo = Usuario.captura,
IS.asignado = `Técnico.asignado`,
IS.visita = `Técnico.de.visita`,
Visitas = N...de.visitas,
Cierre = Fecha.cierre,
TST = Tiempo.transcurrido,
TMO = Tiempo.efectivo.en.sitio,
TR = Tiempo.de.respuesta,
TLR = Limite.de.tiempo.de.respuesta,
TLR.restante = `Tiempo.lÃmite.restante...24`,
TSP = Tiempo.efectivo,
TLS = `Limite.tiempo.de.solución.total`,
TLS.restante = `Tiempo.lÃmite.restante...27`) %>%
mutate(Recepcion = as.Date(Recepcion),
Cierre = as.Date(Cierre)) %>%
filter(Recepcion >= "2018-02-01")
datos_tbl
El modelo de regresión lineal nos permite crear una relación entre 2 variables:
- La variable de previsión \(y\) o dependiente:
- La variable predictora \(x\) o regresora:
Por lo tanto, a partir de esto es como vamos a realizar pronósticos.
datos_tbl %>% ggplot(aes(x = TR, y = TSP)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE)

datos_tsbl <- datos_tbl %>%
filter(IS.visita != "Consultoria Dual",
Estatus == "RESUELTA",
CategorÃa == "CORRECTIVO") %>%
group_by(Recepcion, Ruta) %>%
summarise(across(.cols = c(TR, TSP, TMO, TST), mean),
.groups = "drop") %>%
pivot_longer(
cols = starts_with("T"),
names_to = "SLA",
values_to = "Tiempos"
) %>%
as_tsibble(
# index : la variable temporal
index = Recepcion,
# key : la(s) variable(s) que identifican a cada serie de tiempo
key = c(Ruta, SLA)
)
datos_tsbl
datos_week_tsbl <- datos_tsbl %>%
group_by_key() %>%
index_by(Semana = yearweek(Recepcion)) %>%
summarise(Tiempos = mean(Tiempos), .groups = "drop")
datos_week_tsbl
datos_month_tsbl <- datos_tsbl %>%
group_by_key() %>%
index_by(Mes = yearmonth(Recepcion)) %>%
summarise(Tiempos = mean(Tiempos), .groups = "drop")
datos_month_tsbl
p <- datos_tsbl %>%
filter(Ruta == "JALISCO") %>%
autoplot(Tiempos) + #aes(color = Ruta) +
facet_wrap(~ SLA, scales = "free_y") +
theme(legend.position = "none")
plotly::ggplotly(p)
p <- datos_week_tsbl %>%
filter(Ruta == "JALISCO") %>%
autoplot(Tiempos) + #aes(color = Ruta) +
facet_wrap(~ SLA, scales = "free_y") +
theme(legend.position = "none")
plotly::ggplotly(p)
p <- datos_month_tsbl %>%
filter(Ruta == "JALISCO") %>%
autoplot(Tiempos) + #aes(color = Ruta) +
facet_wrap(~ SLA, scales = "free_y") +
theme(legend.position = "none")
plotly::ggplotly(p)
datos_week_tsbl %>%
filter(Ruta == "JALISCO") %>%
model(ETS(Tiempos),
ARIMA(Tiempos)) %>%
forecast(h = "1 year") %>%
autoplot(datos_week_tsbl, level = NULL)+
facet_wrap(~SLA, scales = "free_y")
Seasonal periods (`period`) of length greather than 24 are not supported by ETS. Seasonality will be ignored.Seasonal periods (`period`) of length greather than 24 are not supported by ETS. Seasonality will be ignored.Seasonal periods (`period`) of length greather than 24 are not supported by ETS. Seasonality will be ignored.Seasonal periods (`period`) of length greather than 24 are not supported by ETS. Seasonality will be ignored.Seasonal periods (`period`) of length greather than 24 are not supported by ETS. Seasonality will be ignored.Seasonal periods (`period`) of length greather than 24 are not supported by ETS. Seasonality will be ignored.Seasonal periods (`period`) of length greather than 24 are not supported by ETS. Seasonality will be ignored.Seasonal periods (`period`) of length greather than 24 are not supported by ETS. Seasonality will be ignored.

LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojIE1vZGVsbyBkZSBSZWdyZXNpw7NuDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KHJlYWR4bCkNCmxpYnJhcnkodHNpYmJsZSkNCmxpYnJhcnkoZmVhc3RzKQ0KbGlicmFyeShmYWJsZSkNCmBgYA0KDQpgYGB7cn0NCmRhdG9zX3RibCA8LSByZWFkX3hsc3goInRpZW1wb3NfcmVzcHVlc3RhLnhsc3giKQ0KDQojZ2xpbXBzZShkYXRvcykNCg0KZGF0b3NfdGJsIDwtIGRhdG9zX3RibCAlPiUgDQogIG11dGF0ZShhY3Jvc3MoY29udGFpbnMoIlRpZW1wbyIpLCBhcy5udW1lcmljKSkgJT4lIA0KICByZW5hbWVfYWxsKGZ1bnMobWFrZS5uYW1lcyguKSkpICU+JSANCiAgcmVuYW1lKE9yZGVuID0gTi4uLmRlLm9yZGVuLA0KICAgICAgICAgU2VyaWUgPSBOLi4uZGUuc2VyaWUsDQogICAgICAgICBFcXVpcG8gPSBOLi4uZGUuZXF1aXBvLA0KICAgICAgICAgTnVtLkNsaWVudGUgPSBOLi5kZS5jbGllbnRlLA0KICAgICAgICAgRGlzdHJpYnVpZG9yID0gR3J1cG8uZW1wcmVzYXJpYWwsDQogICAgICAgICBOaXZlbCA9IE5pdmVsLmRlLnNlcnZpY2lvLA0KICAgICAgICAgUmVjZXBjaW9uID0gYEZlY2hhLnJlY2VwY2nDs25gLA0KICAgICAgICAgRWplY3V0aXZvID0gVXN1YXJpby5jYXB0dXJhLA0KICAgICAgICAgSVMuYXNpZ25hZG8gPSBgVMOpY25pY28uYXNpZ25hZG9gLA0KICAgICAgICAgSVMudmlzaXRhID0gYFTDqWNuaWNvLmRlLnZpc2l0YWAsDQogICAgICAgICBWaXNpdGFzID0gTi4uLmRlLnZpc2l0YXMsDQogICAgICAgICBDaWVycmUgPSBGZWNoYS5jaWVycmUsDQogICAgICAgICBUU1QgPSBUaWVtcG8udHJhbnNjdXJyaWRvLA0KICAgICAgICAgVE1PID0gVGllbXBvLmVmZWN0aXZvLmVuLnNpdGlvLA0KICAgICAgICAgVFIgPSBUaWVtcG8uZGUucmVzcHVlc3RhLA0KICAgICAgICAgVExSID0gTGltaXRlLmRlLnRpZW1wby5kZS5yZXNwdWVzdGEsDQogICAgICAgICBUTFIucmVzdGFudGUgPSBgVGllbXBvLmzDrW1pdGUucmVzdGFudGUuLi4yNGAsDQogICAgICAgICBUU1AgPSBUaWVtcG8uZWZlY3Rpdm8sDQogICAgICAgICBUTFMgPSBgTGltaXRlLnRpZW1wby5kZS5zb2x1Y2nDs24udG90YWxgLA0KICAgICAgICAgVExTLnJlc3RhbnRlID0gYFRpZW1wby5sw61taXRlLnJlc3RhbnRlLi4uMjdgKSAlPiUgDQogIG11dGF0ZShSZWNlcGNpb24gPSBhcy5EYXRlKFJlY2VwY2lvbiksDQogICAgICAgICBDaWVycmUgICAgPSBhcy5EYXRlKENpZXJyZSkpICU+JSANCiAgZmlsdGVyKFJlY2VwY2lvbiA+PSAiMjAxOC0wMi0wMSIpDQoNCmRhdG9zX3RibA0KYGBgDQoNCjxkaXYgc3R5bGU9InRleHQtYWxpZ246IGp1c3RpZnkiPg0KDQpFbCBtb2RlbG8gZGUgcmVncmVzacOzbiBsaW5lYWwgbm9zIHBlcm1pdGUgY3JlYXIgdW5hIHJlbGFjacOzbiBlbnRyZSAyIHZhcmlhYmxlczoNCg0KLSBMYSB2YXJpYWJsZSBkZSBwcmV2aXNpw7NuICR5JCBvIGRlcGVuZGllbnRlOg0KLSBMYSB2YXJpYWJsZSBwcmVkaWN0b3JhICR4JCBvIHJlZ3Jlc29yYTogDQoNClBvciBsbyB0YW50bywgYSBwYXJ0aXIgZGUgZXN0byBlcyBjb21vIHZhbW9zIGEgcmVhbGl6YXIgcHJvbsOzc3RpY29zLg0KDQpgYGB7cn0NCmRhdG9zX3RibCAlPiUgZ2dwbG90KGFlcyh4ID0gVFIsIHkgPSBUU1ApKSArDQogIGdlb21fcG9pbnQoKSArDQogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIHNlID0gRkFMU0UpDQpgYGANCg0KDQpgYGB7cn0NCmRhdG9zX3RzYmwgPC0gZGF0b3NfdGJsICU+JSANCiAgZmlsdGVyKElTLnZpc2l0YSAhPSAiQ29uc3VsdG9yaWEgRHVhbCIsDQogICAgICAgICBFc3RhdHVzICAgPT0gIlJFU1VFTFRBIiwNCiAgICAgICAgIENhdGVnb3LDrWEgPT0gIkNPUlJFQ1RJVk8iKSAlPiUgDQogIGdyb3VwX2J5KFJlY2VwY2lvbiwgUnV0YSkgJT4lIA0KICBzdW1tYXJpc2UoYWNyb3NzKC5jb2xzID0gYyhUUiwgVFNQLCBUTU8sIFRTVCksIG1lYW4pLA0KICAgICAgICAgICAgLmdyb3VwcyA9ICJkcm9wIikgJT4lIA0KICBwaXZvdF9sb25nZXIoDQogICAgY29scyAgICAgID0gc3RhcnRzX3dpdGgoIlQiKSwNCiAgICBuYW1lc190byAgPSAiU0xBIiwgDQogICAgdmFsdWVzX3RvID0gIlRpZW1wb3MiDQogICkgJT4lIA0KICBhc190c2liYmxlKA0KICAgICMgaW5kZXggOiBsYSB2YXJpYWJsZSB0ZW1wb3JhbA0KICAgIGluZGV4ID0gUmVjZXBjaW9uLA0KICAgICMga2V5IDogbGEocykgdmFyaWFibGUocykgcXVlIGlkZW50aWZpY2FuIGEgY2FkYSBzZXJpZSBkZSB0aWVtcG8NCiAgICBrZXkgICA9IGMoUnV0YSwgU0xBKSANCiAgKQ0KDQpkYXRvc190c2JsDQpgYGANCmBgYHtyfQ0KZGF0b3Nfd2Vla190c2JsIDwtIGRhdG9zX3RzYmwgJT4lIA0KICBncm91cF9ieV9rZXkoKSAlPiUgDQogIGluZGV4X2J5KFNlbWFuYSA9IHllYXJ3ZWVrKFJlY2VwY2lvbikpICU+JSANCiAgc3VtbWFyaXNlKFRpZW1wb3MgPSBtZWFuKFRpZW1wb3MpLCAuZ3JvdXBzID0gImRyb3AiKQ0KZGF0b3Nfd2Vla190c2JsDQpgYGANCg0KYGBge3J9DQpkYXRvc19tb250aF90c2JsIDwtIGRhdG9zX3RzYmwgJT4lIA0KICBncm91cF9ieV9rZXkoKSAlPiUgDQogIGluZGV4X2J5KE1lcyA9IHllYXJtb250aChSZWNlcGNpb24pKSAlPiUgDQogIHN1bW1hcmlzZShUaWVtcG9zID0gbWVhbihUaWVtcG9zKSwgLmdyb3VwcyA9ICJkcm9wIikNCmRhdG9zX21vbnRoX3RzYmwNCmBgYA0KDQoNCmBgYHtyfQ0KcCA8LSBkYXRvc190c2JsICU+JSANCiAgZmlsdGVyKFJ1dGEgPT0gIkpBTElTQ08iKSAlPiUgDQogIGF1dG9wbG90KFRpZW1wb3MpICsgI2Flcyhjb2xvciA9IFJ1dGEpICsNCiAgZmFjZXRfd3JhcCh+IFNMQSwgc2NhbGVzID0gImZyZWVfeSIpICsNCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQ0KDQpwbG90bHk6OmdncGxvdGx5KHApDQoNCnAgPC0gZGF0b3Nfd2Vla190c2JsICU+JSANCiAgZmlsdGVyKFJ1dGEgPT0gIkpBTElTQ08iKSAlPiUgDQogIGF1dG9wbG90KFRpZW1wb3MpICsgI2Flcyhjb2xvciA9IFJ1dGEpICsNCiAgZmFjZXRfd3JhcCh+IFNMQSwgc2NhbGVzID0gImZyZWVfeSIpICsNCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQ0KDQpwbG90bHk6OmdncGxvdGx5KHApDQoNCnAgPC0gZGF0b3NfbW9udGhfdHNibCAlPiUgDQogIGZpbHRlcihSdXRhID09ICJKQUxJU0NPIikgJT4lIA0KICBhdXRvcGxvdChUaWVtcG9zKSArICNhZXMoY29sb3IgPSBSdXRhKSArDQogIGZhY2V0X3dyYXAofiBTTEEsIHNjYWxlcyA9ICJmcmVlX3kiKSArDQogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikNCg0KcGxvdGx5OjpnZ3Bsb3RseShwKQ0KYGBgDQoNCmBgYHtyfQ0KZGF0b3Nfd2Vla190c2JsICU+JSANCiAgZmlsdGVyKFJ1dGEgPT0gIkpBTElTQ08iKSAlPiUgDQogIG1vZGVsKEVUUyhUaWVtcG9zKSwNCiAgICAgICAgQVJJTUEoVGllbXBvcykpICU+JSANCiAgZm9yZWNhc3QoaCA9ICIxIHllYXIiKSAlPiUgDQogIGF1dG9wbG90KGRhdG9zX3dlZWtfdHNibCwgbGV2ZWwgPSBOVUxMKSsNCiAgZmFjZXRfd3JhcCh+U0xBLCBzY2FsZXMgPSAiZnJlZV95IikNCmBgYA0KDQo=